// noinspection JSUnresolvedReference /** * Field Google Map */ /* global jQuery, document, redux_change, redux, google */ (function ( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.google_maps = redux.field_objects.google_maps || {}; /* LIBRARY INIT */ redux.field_objects.google_maps.init = function ( selector ) { if ( ! selector ) { selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' ); } $( selector ).each( function ( i ) { let delayRender; const el = $( this ); let parent = el; if ( ! el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ':hidden' ) ) { return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // Check for delay render, which is useful for calling a map // render after JavaScript load. delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) ); // API Key button. redux.field_objects.google_maps.clickHandler( el ); // Init our maps. redux.field_objects.google_maps.initMap( el, i, delayRender ); } ); }; /* INIT MAP FUNCTION */ redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) { let delayed; let scrollWheel; let streetView; let mapType; let address; let defLat; let defLong; let defaultZoom; let mapOptions; let geocoder; let g_autoComplete; let g_LatLng; let g_map; let noLatLng = false; // Pull the map class. const mapClass = el.find( '.redux_framework_google_maps' ); const containerID = mapClass.attr( 'id' ); const autocomplete = containerID + '_autocomplete'; const canvas = containerID + '_map_canvas'; const canvasId = $( '#' + canvas ); const latitude = containerID + '_latitude'; const longitude = containerID + '_longitude'; // Add map index to data attr. // Why, say we want to use delay_render, // and want to init the map later on. // You'd need the index number in the // event of multiple map instances. // This allows one to retrieve it // later. $( mapClass ).attr( 'data-idx', idx ); if ( true === delayRender ) { return; } // Map has been rendered, no need to process again. if ( $( '#' + containerID ).hasClass( 'rendered' ) ) { return; } // If a map is set to delay render and has been initiated // from another scrip, add the 'render' class so rendering // does not occur. // It messes things up. delayed = Boolean( mapClass.data( 'delay-render' ) ); if ( true === delayed ) { mapClass.addClass( 'rendered' ); } // Create the autocomplete object, restricting the search // to geographical location types. g_autoComplete = await google.maps.importLibrary( 'places' ); g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} ); // Data bindings. scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) ); streetView = Boolean( mapClass.data( 'street-view' ) ); mapType = Boolean( mapClass.data( 'map-type' ) ); address = mapClass.data( 'address' ); address = decodeURIComponent( address ); address = address.trim(); // Set default Lat/lng. defLat = canvasId.data( 'default-lat' ); defLong = canvasId.data( 'default-long' ); defaultZoom = canvasId.data( 'default-zoom' ); // Eval whether to set maps based on lat/lng or address. if ( '' !== address ) { if ( '' === defLat || '' === defLong ) { noLatLng = true; } } else { noLatLng = false; } // Can't have empty values, or the map API will complain. // Set default for the middle of the United States. defLat = defLat ? defLat : 39.11676722061108; defLong = defLong ? defLong : -100.47761000000003; if ( noLatLng ) { // If displaying a map based on an address. geocoder = new google.maps.Geocoder(); // Set up Geocode and pass address. geocoder.geocode( {'address': address}, function ( results, status ) { let latitude; let longitude; // Function results. if ( status === google.maps.GeocoderStatus.OK ) { // A good address was passed. g_LatLng = results[0].geometry.location; // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); // Get and set lat/long data. latitude = el.find( '#' + containerID + '_latitude' ); latitude.val( results[0].geometry.location.lat() ); longitude = el.find( '#' + containerID + '_longitude' ); longitude.val( results[0].geometry.location.lng() ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } else { // No data found, alert the user. alert( 'Geocode was not successful for the following reason: ' + status ); } } ); } else { // If displaying map based on an lat/lng. g_LatLng = new google.maps.LatLng( defLat, defLong ); // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, // Start off far unless an item is selected, set by php. streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create the map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } }; redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) { let markerTooltip; let infoWindow; let g_marker; let geoAlert = mapClass.data( 'geo-alert' ); // Get HTML. const input = document.getElementById( autocomplete ); // Set objects into the map. g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input ); // Bind objects to the map. g_autoComplete = new google.maps.places.Autocomplete( input ); g_autoComplete.bindTo( 'bounds', g_map ); // Get the marker tooltip data. markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Create infoWindow. infoWindow = new google.maps.InfoWindow(); // Create marker. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), draggable: true, title: markerTooltip, animation: google.maps.Animation.DROP } ); geoAlert = decodeURIComponent( geoAlert ); // Place change. google.maps.event.addListener( g_autoComplete, 'place_changed', function () { let place; let address; let markerTooltip; infoWindow.close(); // Get place data. place = g_autoComplete.getPlace(); // Display alert if something went wrong. if ( ! place.geometry ) { window.alert( geoAlert ); return; } console.log( place.geometry.viewport ); // If the place has a geometry, then present it on a map. if ( place.geometry.viewport ) { g_map.fitBounds( place.geometry.viewport ); } else { g_map.setCenter( place.geometry.location ); g_map.setZoom( 17 ); // Why 17? Because it looks good. } markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Set the marker icon. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), title: markerTooltip, clickable: true, draggable: true, animation: google.maps.Animation.DROP } ); // Set marker position and display. g_marker.setPosition( place.geometry.location ); g_marker.setVisible( true ); // Form array of address components. address = ''; if ( place.address_components ) { address = [( place.address_components[0] && place.address_components[0].short_name || '' ), ( place.address_components[1] && place.address_components[1].short_name || '' ), ( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' ); } // Set the default marker info window with address data. infoWindow.setContent( '
' + place.name + '
' + address ); infoWindow.open( g_map, g_marker ); // Run Geolocation. redux.field_objects.google_maps.geoLocate( g_autoComplete ); // Fill in address inputs. redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete ); } ); // Marker drag. google.maps.event.addListener( g_marker, 'drag', function ( event ) { document.getElementById( latitude ).value = event.latLng.lat(); document.getElementById( longitude ).value = event.latLng.lng(); } ); // End marker drag. google.maps.event.addListener( g_marker, 'dragend', function () { redux_change( el.find( '.redux_framework_google_maps' ) ); } ); // Zoom Changed. g_map.addListener( 'zoom_changed', function () { el.find( '.google_m_zoom_input' ).val( g_map.getZoom() ); } ); // Marker Info Window. infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener( g_marker, 'click', function () { const marker_info = containerID + '_marker_info'; const infoValue = document.getElementById( marker_info ).value; if ( '' !== infoValue ) { infoWindow.setContent( infoValue ); infoWindow.open( g_map, g_marker ); } } ); }; /* FILL IN ADDRESS FUNCTION */ redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) { // Set variables. const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' ); // What if someone only wants city, or state, ect... // gotta do it this way to check for the address! // Need to check each of the returned components to see what is returned. const componentForm = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' }; // Get the place details from the autocomplete object. const place = g_autoComplete.getPlace(); let component; let i; let addressType; let _d_addressType; let val; let len; document.getElementById( latitude ).value = place.geometry.location.lat(); document.getElementById( longitude ).value = place.geometry.location.lng(); for ( component in componentForm ) { if ( componentForm.hasOwnProperty( component ) ) { // Push in the dynamic form element ID again. component = containerID + '_' + component; // Assign to proper place. document.getElementById( component ).value = ''; document.getElementById( component ).disabled = false; } } // Get each component of the address from the place details // and fill the corresponding field on the form. len = place.address_components.length; for ( i = 0; i < len; i += 1 ) { addressType = place.address_components[i].types[0]; if ( componentForm[addressType] ) { // Push in the dynamic form element ID again. _d_addressType = containerID + '_' + addressType; // Get the original. val = place.address_components[i][componentForm[addressType]]; // Assign to proper place. document.getElementById( _d_addressType ).value = val; } } }; redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) { if ( navigator.geolocation ) { navigator.geolocation.getCurrentPosition( function ( position ) { const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude ); const circle = new google.maps.Circle( { center: geolocation, radius: position.coords.accuracy } ); g_autoComplete.setBounds( circle.getBounds() ); } ); } }; /* API BUTTON CLICK HANDLER */ redux.field_objects.google_maps.clickHandler = function ( el ) { // Find the API Key button and react on click. el.find( '.google_m_api_key_button' ).on( 'click', function () { // Find message wrapper. const wrapper = el.find( '.google_m_api_key_wrapper' ); if ( wrapper.is( ':visible' ) ) { // If the wrapper is visible, close it. wrapper.slideUp( 'fast', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } else { // If the wrapper is visible, open it. wrapper.slideDown( 'medium', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } } ); el.find( '.google_m_autocomplete' ).on( 'keypress', function ( e ) { if ( 13 === e.keyCode ) { e.preventDefault(); } } ); // Auto select autocomplete contents, // since Google doesn't do this inherently. el.find( '.google_m_autocomplete' ).on( 'click', function ( e ) { $( this ).trigger( 'focus' ); $( this ).trigger( 'select' ); e.preventDefault(); } ); }; } )( jQuery ); Aviator Platforması – Qeydiyyat və Giriş – İcmanın İlk Təəssüratları with Aviator – Mobil Tətbiq – Aviator-un Portativ Versiyası – Orchid Group
Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Aviator Platforması – Qeydiyyat və Giriş – İcmanın İlk Təəssüratları with Aviator – Mobil Tətbiq – Aviator-un Portativ Versiyası

Aviator Platforması – İcma Nöqteyi-Nəzərindən Ümumi İcmal

Aviator platforması son vaxtlar Azərbaycan oyun icması arasında geniş müzakirə olunur. Bu icmalda biz, oyunçuların ümumi təcrübəsinə əsaslanaraq, aviator platformasının interfeysini, qeydiyyat prosesini, bonus sistemini, ödəniş üsullarını və təhlükəsizlik tədbirlərini ətraflı nəzərdən keçirəcəyik. Məqsədimiz, platformanın güclü və zəif tərəflərini real oyunçu rəyləri ilə ümumiləşdirərək, sizə dəyərli bir məlumat mənbəyi təqdim etməkdir.

Qeydiyyat və Giriş – İcmanın İlk Təəssüratları with Aviator

Oyunçuların əksəriyyəti Aviator-da qeydiyyat prosesini sadə və sürətli hesab edir. Platformada qeydiyyatdan keçmək üçün bir neçə variant var: e-poçt vasitəsilə klassik üsul və ya sosial şəbəkə hesabları ilə bir kliklə qeydiyyat. İcma üzvləri qeyd edir ki, mobil nömrə ilə də qeydiyyat mümkündür, bu da yerli istifadəçilər üçün rahatlıq yaradır. Giriş prosesi də eyni dərəcədə intuitivdir – istifadəçi adı və şifrəni daxil etmək kifayətdir. Bəzi oyunçular, xüsusən də yeni başlayanlar, şifrə bərpa funksiyasının tez işlədiyini vurğulayırlar.

Mobil Tətbiq – Aviator-un Portativ Versiyası

Aviator-un mobil tətbiqi Azərbaycan bazarında geniş yayılıb. İcma rəylərinə görə, tətbiq həm Android, həm də iOS cihazlarında stabil işləyir. Oyunçular tətbiqin interfeysinin masaüstü versiyaya nisbətən daha yığcam və istifadəsi asan olduğunu bildirirlər. Tətbiqin əsas üstünlükləri arasında sürətli yüklənmə, real vaxt rejimində bildirişlər və aşağı data sərfiyyatı qeyd olunur. Bununla belə, bəzi istifadəçilər tətbiqin bəzi bölmələrinin, məsələn, canlı dəstək söhbətinin, masaüstü versiyadakı qədər ətraflı olmadığını deyirlər.

Aviator

Bonuslar və Promosiyalar – İcmanın Fikri with Aviator

Aviator platformasının bonus siyasəti oyunçular arasında müxtəlif rəylərə səbəb olur. Aşağıda ən populyar bonus növləri və onlarla bağlı icma rəylərini təqdim edirik:

  • Xoş gəlmisiniz bonusu: Yeni qeydiyyatdan keçən oyunçular üçün depozit bonusu təklif olunur. Əksər oyunçular bunu sərfəli hesab edir, lakin mərc şərtlərinin (vager) yüksək olduğunu qeyd edirlər.
  • Pulsuz fırlanmalar: Bəzi promosiyalar çərçivəsində pulsuz fırlanmalar təklif olunur. İcma üzvləri bunu əyləncəli bir əlavə kimi qiymətləndirir, lakin uduşların məbləğinin məhdud olduğunu bildirirlər.
  • Cashback təklifləri: Həftəlik və ya aylıq cashback (geriyə qaytarma) bonusu itkiləri kompensasiya etmək üçün faydalıdır. Oyunçular bu bonusu platformanın ən cəlbedici tərəflərindən biri hesab edirlər.
  • Turnirlər: Aviator müntəzəm olaraq turnirlər təşkil edir, burada oyunçular liderlik cədvəlində yarışaraq əlavə mükafatlar qazana bilərlər. Bu, icmanın rəqabət ruhunu qıcıqlandırır.
  • VIP proqramı: Aktiv oyunçular üçün VIP statusu mövcuddur. VIP üzvlər şəxsi menecer, daha sürətli ödənişlər və xüsusi bonuslar əldə edirlər. Ancaq VIP səviyyəsinə yüksəlmək üçün yüksək məbləğdə mərc etmək tələb olunur.

Depozitlər və Çıxarışlar – Ödəniş Üsullarının Təhlili

Aviator platformasında depozit və çıxarış əməliyyatları üçün bir neçə yerli və beynəlxalq üsul təklif olunur. İcma rəylərinə əsasən, ən populyar variantlar bunlardır:

Ödəniş Üsulu Depozit Sürəti Çıxarış Sürəti İcma Rəyi
Kart (Visa/MasterCard) Dərhal 1-3 iş günü Geniş istifadə olunur, lakin çıxarış bəzən gecikir
Elektron pul kisələri Dərhal 24 saat Ən sürətli seçim, lakin bəzi provayderlər məhduddur
Bank köçürməsi 1-2 iş günü 3-5 iş günü Yalnız böyük məbləğlər üçün uyğundur
Kriptovalyuta Dərhal Dərhal Anonimlik təmin edir, lakin volatillik riski var
Mobil ödənişlər Dərhal Mövcud deyil Kiçik məbləğlər üçün rahat, ancaq çıxarış mümkün deyil

Oyunçuların əksəriyyəti depozit prosesinin problemsiz olduğunu bildirir. Çıxarışlarla bağlı əsas şikayət, bəzi hallarda sənədlərin təsdiqinin gecikməsidir. Platforma, KYC (Know Your Customer) qaydalarına uyğun olaraq, ilk çıxarışdan əvvəl şəxsiyyətin təsdiqini tələb edir. Bu, təhlükəsizlik baxımından müsbət qarşılanır, lakin sürət baxımından bəzi oyunçuları narahat edir.

Təhlükəsizlik və KYC – İcmanın Etibar Səviyyəsi with Aviator

Aviator platforması lisenziyalı bir qurumdur və oyunçuların məlumatlarını qorumaq üçün SSL şifrələmə texnologiyasından istifadə edir. İcma üzvləri bu təhlükəsizlik tədbirlərini müsbət qiymətləndirir. KYC prosesi, yəni şəxsiyyətin təsdiqi, bəzi oyunçular üçün çətinlik yarada bilər. Tələb olunan sənədlər (şəxsiyyət vəsiqəsi, yaşayış ünvanı təsdiqi) adətən standartdır. Platformanın məlumat sızması ilə bağlı heç bir ciddi hadisəsi qeydə alınmayıb, bu da etibarı artırır. Bununla belə, bəzi oyunçular KYC prosesinin çox uzun sürdüyünü və bunun oyun təcrübəsinə mənfi təsir etdiyini bildirirlər.

Aviator

Dəstək Xidməti – Oyunçuların Kömək Təcrübəsi

Aviator-un müştəri dəstəyi əsasən canlı söhbət və e-poçt vasitəsilə işləyir. İcma rəylərinə əsasən, canlı söhbət ən sürətli üsuldur – cavab müddəti adətən 1-2 dəqiqədir. E-poçt vasitəsilə sorğular 24 saat ərzində cavablandırılır. Oyunçular dəstək agentlərinin peşəkarlığını yüksək qiymətləndirir, lakin bəzi hallarda cavabların standart olduğunu deyirlər. Telefon dəstəyi mövcud deyil, bu da bəzi istifadəçilər üçün çatışmazlıqdır. Ümumilikdə, dəstək xidməti platformanın orta səviyyəli aspektlərindən biri kimi qiymətləndirilir.

Platformanın Üstünlükləri və Çatışmazlıqları

İcma rəylərini ümumiləşdirərək, Aviator platformasının əsas güclü və zəif tərəflərini təqdim edirik:

  • Üstünlüklər: İntuitiv interfeys, sürətli qeydiyyat, geniş bonus seçimi, mobil tətbiqin stabil işləməsi, təhlükəsiz ödəniş üsulları.
  • Çatışmazlıqlar: Yüksək mərc şərtləri, KYC prosesinin bəzən gecikməsi, telefon dəstəyinin olmaması, bəzi ödəniş üsullarının məhdudluğu.

Platformanın ümumi reytinqi icma arasında 4.2/5 olaraq qiymətləndirilir. Oyunçuların əksəriyyəti Aviator-u tövsiyə edir, lakin bonus şərtlərini diqqətlə oxumağı məsləhət görür. Platforma həm yeni başlayanlar, həm də təcrübəli oyunçular üçün uyğundur, lakin hər kəsin fərdi ehtiyacları fərqli olduğu üçün, öz təcrübənizi qazanmaq ən yaxşı yoldur.

Aviator, geniş oyunçu kütləsinə xidmət edən müasir bir platformadır. Onun sadə dizaynı və müxtəlif bonus təklifləri diqqət çəkir. Bununla yanaşı, hər bir oyunçu öz seçimlərinə uyğun olaraq platformanın şərtlərini nəzərdən keçirməlidir.

Platformanın gələcək inkişafı, istifadəçi rəylərinə əsasən, daha sürətli KYC prosesi və genişləndirilmiş dəstək variantları ilə bağlı ola bilər. Hazırda Aviator, balanslaşdırılmış bir təcrübə təklif edir və müntəzəm olaraq yenilənir.

Design and Develop by Ovatheme